{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Convolutional Neural Networks: Application\n",
    "\n",
    "Welcome to Course 4's second assignment! In this notebook, you will:\n",
    "\n",
    "- Implement helper functions that you will use when implementing a TensorFlow model\n",
    "- Implement a fully functioning ConvNet using TensorFlow \n",
    "\n",
    "**After this assignment you will be able to:**\n",
    "\n",
    "- Build and train a ConvNet in TensorFlow for a classification problem \n",
    "\n",
    "We assume here that you are already familiar with TensorFlow. If you are not, please refer the *TensorFlow Tutorial* of the third week of Course 2 (\"*Improving deep neural networks*\")."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1.0 - TensorFlow model\n",
    "\n",
    "In the previous assignment, you built helper functions using numpy to understand the mechanics behind convolutional neural networks. Most practical applications of deep learning today are built using programming frameworks, which have many built-in functions you can simply call. \n",
    "\n",
    "As usual, we will start by loading in the packages. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "import math\n",
    "import numpy as np\n",
    "import h5py\n",
    "import matplotlib.pyplot as plt\n",
    "import scipy\n",
    "# from PIL import Image\n",
    "from scipy import ndimage\n",
    "# from PIL.Image import core as _imaging\n",
    "import tensorflow as tf\n",
    "from tensorflow.python.framework import ops\n",
    "from cnn_utils import *\n",
    "\n",
    "%matplotlib inline\n",
    "np.random.seed(1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Run the next cell to load the \"SIGNS\" dataset you are going to use."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# Loading the data (signs)\n",
    "X_train_orig, Y_train_orig, X_test_orig, Y_test_orig, classes = load_dataset()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As a reminder, the SIGNS dataset is a collection of 6 signs representing numbers from 0 to 5.\n",
    "\n",
    "<img src=\"images/SIGNS.png\" style=\"width:800px;height:300px;\">\n",
    "\n",
    "The next cell will show you an example of a labelled image in the dataset. Feel free to change the value of `index` below and re-run to see different examples. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "y = 5\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x13ebb860>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Example of a picture\n",
    "index = 15\n",
    "plt.imshow(X_train_orig[index])\n",
    "print (\"y = \" + str(np.squeeze(Y_train_orig[:, index])))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In Course 2, you had built a fully-connected network for this dataset. But since this is an image dataset, it is more natural to apply a ConvNet to it.\n",
    "\n",
    "To get started, let's examine the shapes of your data. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "number of training examples = 1080\n",
      "number of test examples = 120\n",
      "X_train shape: (1080, 64, 64, 3)\n",
      "Y_train shape: (1080, 6)\n",
      "X_test shape: (120, 64, 64, 3)\n",
      "Y_test shape: (120, 6)\n"
     ]
    }
   ],
   "source": [
    "X_train = X_train_orig/255.\n",
    "X_test = X_test_orig/255.\n",
    "Y_train = convert_to_one_hot(Y_train_orig, 6).T\n",
    "Y_test = convert_to_one_hot(Y_test_orig, 6).T\n",
    "print (\"number of training examples = \" + str(X_train.shape[0]))\n",
    "print (\"number of test examples = \" + str(X_test.shape[0]))\n",
    "print (\"X_train shape: \" + str(X_train.shape))\n",
    "print (\"Y_train shape: \" + str(Y_train.shape))\n",
    "print (\"X_test shape: \" + str(X_test.shape))\n",
    "print (\"Y_test shape: \" + str(Y_test.shape))\n",
    "conv_layers = {}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "### 1.1 - Create placeholders\n",
    "\n",
    "TensorFlow requires that you create placeholders for the input data that will be fed into the model when running the session.\n",
    "\n",
    "**Exercise**: Implement the function below to create placeholders for the input image X and the output Y. You should not define the number of training examples for the moment. To do so, you could use \"None\" as the batch size, it will give you the flexibility to choose it later. Hence X should be of dimension **[None, n_H0, n_W0, n_C0]** and Y should be of dimension **[None, n_y]**.  [Hint](https://www.tensorflow.org/api_docs/python/tf/placeholder)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# GRADED FUNCTION: create_placeholders\n",
    "\n",
    "def create_placeholders(n_H0, n_W0, n_C0, n_y):\n",
    "    \"\"\"\n",
    "    Creates the placeholders for the tensorflow session.\n",
    "    \n",
    "    Arguments:\n",
    "    n_H0 -- scalar, height of an input image\n",
    "    n_W0 -- scalar, width of an input image\n",
    "    n_C0 -- scalar, number of channels of the input\n",
    "    n_y -- scalar, number of classes\n",
    "        \n",
    "    Returns:\n",
    "    X -- placeholder for the data input, of shape [None, n_H0, n_W0, n_C0] and dtype \"float\"\n",
    "    Y -- placeholder for the input labels, of shape [None, n_y] and dtype \"float\"\n",
    "    \"\"\"\n",
    "\n",
    "    ### START CODE HERE ### (≈2 lines)\n",
    "    X = tf.placeholder('float', shape=[None, n_H0, n_W0, n_C0])\n",
    "    Y = tf.placeholder('float', shape=[None, n_y])\n",
    "    ### END CODE HERE ###\n",
    "    \n",
    "    return X, Y"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "X = Tensor(\"Placeholder:0\", shape=(?, 64, 64, 3), dtype=float32)\n",
      "Y = Tensor(\"Placeholder_1:0\", shape=(?, 6), dtype=float32)\n"
     ]
    }
   ],
   "source": [
    "X, Y = create_placeholders(64, 64, 3, 6)\n",
    "print (\"X = \" + str(X))\n",
    "print (\"Y = \" + str(Y))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Expected Output**\n",
    "\n",
    "<table> \n",
    "<tr>\n",
    "<td>\n",
    "    X = Tensor(\"Placeholder:0\", shape=(?, 64, 64, 3), dtype=float32)\n",
    "\n",
    "</td>\n",
    "</tr>\n",
    "<tr>\n",
    "<td>\n",
    "    Y = Tensor(\"Placeholder_1:0\", shape=(?, 6), dtype=float32)\n",
    "\n",
    "</td>\n",
    "</tr>\n",
    "</table>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1.2 - Initialize parameters\n",
    "\n",
    "You will initialize weights/filters $W1$ and $W2$ using `tf.contrib.layers.xavier_initializer(seed = 0)`. You don't need to worry about bias variables as you will soon see that TensorFlow functions take care of the bias. Note also that you will only initialize the weights/filters for the conv2d functions. TensorFlow initializes the layers for the fully connected part automatically. We will talk more about that later in this assignment.\n",
    "\n",
    "**Exercise:** Implement initialize_parameters(). The dimensions for each group of filters are provided below. Reminder - to initialize a parameter $W$ of shape [1,2,3,4] in Tensorflow, use:\n",
    "```python\n",
    "W = tf.get_variable(\"W\", [1,2,3,4], initializer = ...)\n",
    "```\n",
    "[More Info](https://www.tensorflow.org/api_docs/python/tf/get_variable)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# GRADED FUNCTION: initialize_parameters\n",
    "\n",
    "def initialize_parameters():\n",
    "    \"\"\"\n",
    "    Initializes weight parameters to build a neural network with tensorflow. The shapes are:\n",
    "                        W1 : [4, 4, 3, 8]\n",
    "                        W2 : [2, 2, 8, 16]\n",
    "    Returns:\n",
    "    parameters -- a dictionary of tensors containing W1, W2\n",
    "    \"\"\"\n",
    "    \n",
    "    tf.set_random_seed(1)                              # so that your \"random\" numbers match ours\n",
    "        \n",
    "    ### START CODE HERE ### (approx. 2 lines of code)\n",
    "    W1 = tf.get_variable(\"W1\", [4, 4, 3, 8], initializer = tf.contrib.layers.xavier_initializer(seed = 0))\n",
    "    W2 = tf.get_variable(\"W2\", [2, 2, 8, 16], initializer = tf.contrib.layers.xavier_initializer(seed = 0))\n",
    "    ### END CODE HERE ###\n",
    "\n",
    "    parameters = {\"W1\": W1,\n",
    "                  \"W2\": W2}\n",
    "    \n",
    "    return parameters"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "W1 = [ 0.00131723  0.14176141 -0.04434952  0.09197326  0.14984085 -0.03514394\n",
      " -0.06847463  0.05245192]\n",
      "W2 = [-0.08566415  0.17750949  0.11974221  0.16773748 -0.0830943  -0.08058\n",
      " -0.00577033 -0.14643836  0.24162132 -0.05857408 -0.19055021  0.1345228\n",
      " -0.22779644 -0.1601823  -0.16117483 -0.10286498]\n"
     ]
    }
   ],
   "source": [
    "tf.reset_default_graph()\n",
    "with tf.Session() as sess_test:\n",
    "    parameters = initialize_parameters()\n",
    "    init = tf.global_variables_initializer()\n",
    "    sess_test.run(init)\n",
    "    print(\"W1 = \" + str(parameters[\"W1\"].eval()[1,1,1]))\n",
    "    print(\"W2 = \" + str(parameters[\"W2\"].eval()[1,1,1]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "** Expected Output:**\n",
    "\n",
    "<table> \n",
    "\n",
    "    <tr>\n",
    "        <td>\n",
    "        W1 = \n",
    "        </td>\n",
    "        <td>\n",
    "[ 0.00131723  0.14176141 -0.04434952  0.09197326  0.14984085 -0.03514394 <br>\n",
    " -0.06847463  0.05245192]\n",
    "        </td>\n",
    "    </tr>\n",
    "\n",
    "    <tr>\n",
    "        <td>\n",
    "        W2 = \n",
    "        </td>\n",
    "        <td>\n",
    "[-0.08566415  0.17750949  0.11974221  0.16773748 -0.0830943  -0.08058 <br>\n",
    " -0.00577033 -0.14643836  0.24162132 -0.05857408 -0.19055021  0.1345228 <br>\n",
    " -0.22779644 -0.1601823  -0.16117483 -0.10286498]\n",
    "        </td>\n",
    "    </tr>\n",
    "\n",
    "</table>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1.2 - Forward propagation\n",
    "\n",
    "In TensorFlow, there are built-in functions that carry out the convolution steps for you.\n",
    "\n",
    "- **tf.nn.conv2d(X,W1, strides = [1,s,s,1], padding = 'SAME'):** given an input $X$ and a group of filters $W1$, this function convolves $W1$'s filters on X. The third input ([1,f,f,1]) represents the strides for each dimension of the input (m, n_H_prev, n_W_prev, n_C_prev). You can read the full documentation [here](https://www.tensorflow.org/api_docs/python/tf/nn/conv2d)\n",
    "\n",
    "- **tf.nn.max_pool(A, ksize = [1,f,f,1], strides = [1,s,s,1], padding = 'SAME'):** given an input A, this function uses a window of size (f, f) and strides of size (s, s) to carry out max pooling over each window. You can read the full documentation [here](https://www.tensorflow.org/api_docs/python/tf/nn/max_pool)\n",
    "\n",
    "- **tf.nn.relu(Z1):** computes the elementwise ReLU of Z1 (which can be any shape). You can read the full documentation [here.](https://www.tensorflow.org/api_docs/python/tf/nn/relu)\n",
    "\n",
    "- **tf.contrib.layers.flatten(P)**: given an input P, this function flattens each example into a 1D vector it while maintaining the batch-size. It returns a flattened tensor with shape [batch_size, k]. You can read the full documentation [here.](https://www.tensorflow.org/api_docs/python/tf/contrib/layers/flatten)\n",
    "\n",
    "- **tf.contrib.layers.fully_connected(F, num_outputs):** given a the flattened input F, it returns the output computed using a fully connected layer. You can read the full documentation [here.](https://www.tensorflow.org/api_docs/python/tf/contrib/layers/fully_connected)\n",
    "\n",
    "In the last function above (`tf.contrib.layers.fully_connected`), the fully connected layer automatically initializes weights in the graph and keeps on training them as you train the model. Hence, you did not need to initialize those weights when initializing the parameters. \n",
    "\n",
    "\n",
    "**Exercise**: \n",
    "\n",
    "Implement the `forward_propagation` function below to build the following model: `CONV2D -> RELU -> MAXPOOL -> CONV2D -> RELU -> MAXPOOL -> FLATTEN -> FULLYCONNECTED`. You should use the functions above. \n",
    "\n",
    "In detail, we will use the following parameters for all the steps:\n",
    "     - Conv2D: stride 1, padding is \"SAME\"\n",
    "     - ReLU\n",
    "     - Max pool: Use an 8 by 8 filter size and an 8 by 8 stride, padding is \"SAME\"\n",
    "     - Conv2D: stride 1, padding is \"SAME\"\n",
    "     - ReLU\n",
    "     - Max pool: Use a 4 by 4 filter size and a 4 by 4 stride, padding is \"SAME\"\n",
    "     - Flatten the previous output.\n",
    "     - FULLYCONNECTED (FC) layer: Apply a fully connected layer without an non-linear activation function. Do not call the softmax here. This will result in 6 neurons in the output layer, which then get passed later to a softmax. In TensorFlow, the softmax and cost function are lumped together into a single function, which you'll call in a different function when computing the cost. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# GRADED FUNCTION: forward_propagation\n",
    "\n",
    "def forward_propagation(X, parameters):\n",
    "    \"\"\"\n",
    "    Implements the forward propagation for the model:\n",
    "    CONV2D -> RELU -> MAXPOOL -> CONV2D -> RELU -> MAXPOOL -> FLATTEN -> FULLYCONNECTED\n",
    "    \n",
    "    Arguments:\n",
    "    X -- input dataset placeholder, of shape (input size, number of examples)\n",
    "    parameters -- python dictionary containing your parameters \"W1\", \"W2\"\n",
    "                  the shapes are given in initialize_parameters\n",
    "\n",
    "    Returns:\n",
    "    Z3 -- the output of the last LINEAR unit\n",
    "    \"\"\"\n",
    "    \n",
    "    # Retrieve the parameters from the dictionary \"parameters\" \n",
    "    W1 = parameters['W1']\n",
    "    W2 = parameters['W2']\n",
    "    \n",
    "    ### START CODE HERE ###\n",
    "    # CONV2D: stride of 1, padding 'SAME'\n",
    "    Z1 = tf.nn.conv2d(X,W1, strides = [1,1,1,1], padding = 'SAME')\n",
    "    # RELU\n",
    "    A1 = tf.nn.relu(Z1)\n",
    "    # MAXPOOL: window 8x8, sride 8, padding 'SAME'\n",
    "    P1 = tf.nn.max_pool(A1, ksize = [1,8,8,1], strides = [1,8,8,1], padding = 'SAME')\n",
    "    # CONV2D: filters W2, stride 1, padding 'SAME'\n",
    "    Z2 = tf.nn.conv2d(P1,W2, strides = [1,1,1,1], padding = 'SAME')\n",
    "    # RELU\n",
    "    A2 = tf.nn.relu(Z2)\n",
    "    # MAXPOOL: window 4x4, stride 4, padding 'SAME'\n",
    "    P2 = tf.nn.max_pool(A2, ksize = [1,4,4,1], strides = [1,4,4,1], padding = 'SAME')\n",
    "    # FLATTEN\n",
    "    P2 = tf.contrib.layers.flatten(P2)\n",
    "    # FULLY-CONNECTED without non-linear activation function (not not call softmax).\n",
    "    # 6 neurons in output layer. Hint: one of the arguments should be \"activation_fn=None\" \n",
    "    Z3 = tf.contrib.layers.fully_connected(P2, 6,activation_fn = None)\n",
    "    ### END CODE HERE ###\n",
    "\n",
    "    return Z3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Z3 = [[ 1.44169843 -0.24909666  5.45049906 -0.26189619 -0.20669907  1.36546707]\n",
      " [ 1.40708458 -0.02573211  5.08928013 -0.48669922 -0.40940708  1.26248586]]\n"
     ]
    }
   ],
   "source": [
    "tf.reset_default_graph()\n",
    "\n",
    "with tf.Session() as sess:\n",
    "    np.random.seed(1)\n",
    "    X, Y = create_placeholders(64, 64, 3, 6)\n",
    "    parameters = initialize_parameters()\n",
    "    Z3 = forward_propagation(X, parameters)\n",
    "    init = tf.global_variables_initializer()\n",
    "    sess.run(init)\n",
    "    a = sess.run(Z3, {X: np.random.randn(2,64,64,3), Y: np.random.randn(2,6)})\n",
    "    print(\"Z3 = \" + str(a))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Expected Output**:\n",
    "\n",
    "<table> \n",
    "    <td> \n",
    "    Z3 =\n",
    "    </td>\n",
    "    <td>\n",
    "    [[-0.44670227 -1.57208765 -1.53049231 -2.31013036 -1.29104376  0.46852064] <br>\n",
    " [-0.17601591 -1.57972014 -1.4737016  -2.61672091 -1.00810647  0.5747785 ]]\n",
    "    </td>\n",
    "</table>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1.3 - Compute cost\n",
    "\n",
    "Implement the compute cost function below. You might find these two functions helpful: \n",
    "\n",
    "- **tf.nn.softmax_cross_entropy_with_logits(logits = Z3, labels = Y):** computes the softmax entropy loss. This function both computes the softmax activation function as well as the resulting loss. You can check the full documentation  [here.](https://www.tensorflow.org/api_docs/python/tf/nn/softmax_cross_entropy_with_logits)\n",
    "- **tf.reduce_mean:** computes the mean of elements across dimensions of a tensor. Use this to sum the losses over all the examples to get the overall cost. You can check the full documentation [here.](https://www.tensorflow.org/api_docs/python/tf/reduce_mean)\n",
    "\n",
    "** Exercise**: Compute the cost below using the function above."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# GRADED FUNCTION: compute_cost \n",
    "\n",
    "def compute_cost(Z3, Y):\n",
    "    \"\"\"\n",
    "    Computes the cost\n",
    "    \n",
    "    Arguments:\n",
    "    Z3 -- output of forward propagation (output of the last LINEAR unit), of shape (6, number of examples)\n",
    "    Y -- \"true\" labels vector placeholder, same shape as Z3\n",
    "    \n",
    "    Returns:\n",
    "    cost - Tensor of the cost function\n",
    "    \"\"\"\n",
    "    \n",
    "    ### START CODE HERE ### (1 line of code)\n",
    "    cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits = Z3,labels = Y))\n",
    "    ### END CODE HERE ###\n",
    "    \n",
    "    return cost"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "cost = 4.66487\n"
     ]
    }
   ],
   "source": [
    "tf.reset_default_graph()\n",
    "\n",
    "with tf.Session() as sess:\n",
    "    np.random.seed(1)\n",
    "    X, Y = create_placeholders(64, 64, 3, 6)\n",
    "    parameters = initialize_parameters()\n",
    "    Z3 = forward_propagation(X, parameters)\n",
    "    cost = compute_cost(Z3, Y)\n",
    "    init = tf.global_variables_initializer()\n",
    "    sess.run(init)\n",
    "    a = sess.run(cost, {X: np.random.randn(4,64,64,3), Y: np.random.randn(4,6)})\n",
    "    print(\"cost = \" + str(a))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Expected Output**: \n",
    "\n",
    "<table>\n",
    "    <td> \n",
    "    cost =\n",
    "    </td> \n",
    "    \n",
    "    <td> \n",
    "    2.91034\n",
    "    </td> \n",
    "</table>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1.4 Model \n",
    "\n",
    "Finally you will merge the helper functions you implemented above to build a model. You will train it on the SIGNS dataset. \n",
    "\n",
    "You have implemented `random_mini_batches()` in the Optimization programming assignment of course 2. Remember that this function returns a list of mini-batches. \n",
    "\n",
    "**Exercise**: Complete the function below. \n",
    "\n",
    "The model below should:\n",
    "\n",
    "- create placeholders\n",
    "- initialize parameters\n",
    "- forward propagate\n",
    "- compute the cost\n",
    "- create an optimizer\n",
    "\n",
    "Finally you will create a session and run a for loop  for num_epochs, get the mini-batches, and then for each mini-batch you will optimize the function. [Hint for initializing the variables](https://www.tensorflow.org/api_docs/python/tf/global_variables_initializer)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# GRADED FUNCTION: model\n",
    "\n",
    "def model(X_train, Y_train, X_test, Y_test, learning_rate = 0.009,\n",
    "          num_epochs = 100, minibatch_size = 64, print_cost = True):\n",
    "    \"\"\"\n",
    "    Implements a three-layer ConvNet in Tensorflow:\n",
    "    CONV2D -> RELU -> MAXPOOL -> CONV2D -> RELU -> MAXPOOL -> FLATTEN -> FULLYCONNECTED\n",
    "    \n",
    "    Arguments:\n",
    "    X_train -- training set, of shape (None, 64, 64, 3)\n",
    "    Y_train -- test set, of shape (None, n_y = 6)\n",
    "    X_test -- training set, of shape (None, 64, 64, 3)\n",
    "    Y_test -- test set, of shape (None, n_y = 6)\n",
    "    learning_rate -- learning rate of the optimization\n",
    "    num_epochs -- number of epochs of the optimization loop\n",
    "    minibatch_size -- size of a minibatch\n",
    "    print_cost -- True to print the cost every 100 epochs\n",
    "    \n",
    "    Returns:\n",
    "    train_accuracy -- real number, accuracy on the train set (X_train)\n",
    "    test_accuracy -- real number, testing accuracy on the test set (X_test)\n",
    "    parameters -- parameters learnt by the model. They can then be used to predict.\n",
    "    \"\"\"\n",
    "    \n",
    "    ops.reset_default_graph()                         # to be able to rerun the model without overwriting tf variables\n",
    "    tf.set_random_seed(1)                             # to keep results consistent (tensorflow seed)\n",
    "    seed = 3                                          # to keep results consistent (numpy seed)\n",
    "    (m, n_H0, n_W0, n_C0) = X_train.shape             \n",
    "    n_y = Y_train.shape[1]                            \n",
    "    costs = []                                        # To keep track of the cost\n",
    "    \n",
    "    # Create Placeholders of the correct shape\n",
    "    ### START CODE HERE ### (1 line)\n",
    "    X, Y = create_placeholders(n_H0, n_W0, n_C0, n_y)\n",
    "    ### END CODE HERE ###\n",
    "\n",
    "    # Initialize parameters\n",
    "    ### START CODE HERE ### (1 line)\n",
    "    parameters = initialize_parameters()\n",
    "    ### END CODE HERE ###\n",
    "    \n",
    "    # Forward propagation: Build the forward propagation in the tensorflow graph\n",
    "    ### START CODE HERE ### (1 line)\n",
    "    Z3 = forward_propagation(X, parameters)\n",
    "    ### END CODE HERE ###\n",
    "    \n",
    "    # Cost function: Add cost function to tensorflow graph\n",
    "    ### START CODE HERE ### (1 line)\n",
    "    cost = compute_cost(Z3, Y)\n",
    "    ### END CODE HERE ###\n",
    "    \n",
    "    # Backpropagation: Define the tensorflow optimizer. Use an AdamOptimizer that minimizes the cost.\n",
    "    ### START CODE HERE ### (1 line)\n",
    "    optimizer = tf.train.AdamOptimizer(learning_rate).minimize(cost)\n",
    "    ### END CODE HERE ###\n",
    "    \n",
    "    # Initialize all the variables globally\n",
    "    init = tf.global_variables_initializer()\n",
    "     \n",
    "    # Start the session to compute the tensorflow graph\n",
    "    with tf.Session() as sess:\n",
    "        \n",
    "        # Run the initialization\n",
    "        sess.run(init)\n",
    "        \n",
    "        # Do the training loop\n",
    "        for epoch in range(num_epochs):\n",
    "\n",
    "            minibatch_cost = 0.\n",
    "            num_minibatches = int(m / minibatch_size) # number of minibatches of size minibatch_size in the train set\n",
    "            seed = seed + 1\n",
    "            minibatches = random_mini_batches(X_train, Y_train, minibatch_size, seed)\n",
    "\n",
    "            for minibatch in minibatches:\n",
    "\n",
    "                # Select a minibatch\n",
    "                (minibatch_X, minibatch_Y) = minibatch\n",
    "                # IMPORTANT: The line that runs the graph on a minibatch.\n",
    "                # Run the session to execute the optimizer and the cost, the feedict should contain a minibatch for (X,Y).\n",
    "                ### START CODE HERE ### (1 line)\n",
    "                _ , temp_cost = sess.run([optimizer, cost] , feed_dict={X: minibatch_X, Y: minibatch_Y})\n",
    "                ### END CODE HERE ###\n",
    "                \n",
    "                minibatch_cost += temp_cost / num_minibatches\n",
    "                \n",
    "\n",
    "            # Print the cost every epoch\n",
    "            if print_cost == True and epoch % 5 == 0:\n",
    "                print (\"Cost after epoch %i: %f\" % (epoch, minibatch_cost))\n",
    "            if print_cost == True and epoch % 1 == 0:\n",
    "                costs.append(minibatch_cost)\n",
    "        \n",
    "        \n",
    "        # plot the cost\n",
    "        plt.plot(np.squeeze(costs))\n",
    "        plt.ylabel('cost')\n",
    "        plt.xlabel('iterations (per tens)')\n",
    "        plt.title(\"Learning rate =\" + str(learning_rate))\n",
    "        plt.show()\n",
    "\n",
    "        # Calculate the correct predictions\n",
    "        predict_op = tf.argmax(Z3, 1)\n",
    "        correct_prediction = tf.equal(predict_op, tf.argmax(Y, 1))\n",
    "        \n",
    "        # Calculate accuracy on the test set\n",
    "        accuracy = tf.reduce_mean(tf.cast(correct_prediction, \"float\"))\n",
    "        print(accuracy)\n",
    "        train_accuracy = accuracy.eval({X: X_train, Y: Y_train})\n",
    "        test_accuracy = accuracy.eval({X: X_test, Y: Y_test})\n",
    "        print(\"Train Accuracy:\", train_accuracy)\n",
    "        print(\"Test Accuracy:\", test_accuracy)\n",
    "                \n",
    "        return train_accuracy, test_accuracy, parameters"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Run the following cell to train your model for 100 epochs. Check if your cost after epoch 0 and 5 matches our output. If not, stop the cell and go back to your code!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Cost after epoch 0: 1.921332\n",
      "Cost after epoch 5: 1.904156\n",
      "Cost after epoch 10: 1.904309\n",
      "Cost after epoch 15: 1.904477\n",
      "Cost after epoch 20: 1.901876\n",
      "Cost after epoch 25: 1.784078\n",
      "Cost after epoch 30: 1.681051\n",
      "Cost after epoch 35: 1.618207\n",
      "Cost after epoch 40: 1.597971\n",
      "Cost after epoch 45: 1.566707\n",
      "Cost after epoch 50: 1.554487\n",
      "Cost after epoch 55: 1.502188\n",
      "Cost after epoch 60: 1.461036\n",
      "Cost after epoch 65: 1.304479\n",
      "Cost after epoch 70: 1.201502\n",
      "Cost after epoch 75: 1.144233\n",
      "Cost after epoch 80: 1.096785\n",
      "Cost after epoch 85: 1.081992\n",
      "Cost after epoch 90: 1.054077\n",
      "Cost after epoch 95: 1.025999\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nExEzMzNLjRMRMzMzS40TETMzM0uNExEzMzNLjRMRMzMzS40TETMzM0uNExEzMzNLjRMRMzMzS40T\nETMzM0uNExEzMzNLjRMRMzMzS40TETMzM0uNExEzMzNLjRMRMzMzS40TETMzM0uNExEzMzNLjRMR\nMzMzS40TETMzM0uNExEzMzNLjRMRMzMzS40TETMzM0uNExEzMzNLjRMRMzMzS40TETMzM0uNExEz\nMzNLjRMRMzMzS40TETMzM0uNExEzMzNLjRMRMzMzS40TETMzM0tN0SQiko6VNFnSLEmvStq0ivr7\nSZooaaakryTdKmn5QsVr1VNeXp52CI2On3nh+ZkXnp956SiKRETSIOBK4FxgY+Bt4ElJ7SuovyVw\nJ3AzsB6wF9AL+GtBArZq8z8WhednXnh+5oXnZ146iiIRAYYBN4UQ7goh/Ac4GvgVOLSC+r2BySGE\nkSGET0MILwM3EZMRMzMzayBST0QkLQX0BMZmykIIAXgG2LyCy14BOknaKblHB2Bv4J/1G62ZmZnV\npdQTEaA90BSYmlM+FeiY74KkBWR/4G+S5gJfAz8Cx9VjnGZmZlbHmqUdQG1IWg+4BjgPeApYCbiC\n2D1zeAWXtQSYNGlSASK0jOnTpzNhwoS0w2hU/MwLz8+88PzMCyvrd2fLur63Yi9IepKumV+BPUMI\no7PK7wDKQggD81xzF9AyhLBPVtmWwIvASiGE3NYVJO0L3Fv3n8DMzKzR2C+EcF9d3jD1FpEQwjxJ\n44HtgdEAkpS8vraCy5YB5uaULQACoAqueRLYD5gCzF6yqM3MzBqVlkBn4u/SOpV6iwiApH2AO4iz\nZV4nzqLZC1gnhPCdpEuAlUMIByX1DyJO1f0D8aGsDIwAfgshbFH4T2BmZma1kXqLCEAIYVSyZsgF\nQAdgItA/hPBdUqUj0Cmr/p2SWgPHEseG/EScdXNGQQM3MzOzJVIULSJmZmbWOBXD9F0zMzNrpJyI\nmJmZWWoaRSJS0w31rPoknSnpdUk/S5oq6WFJ3fLUuyDZnPBXSU9LWjONeEuNpDMkLZB0VU65n3cd\nk7SypLslfZ8817cl9cip4+deRyQ1kfQnSZ8kz/O/kobnqednXkuS+kgaLenL5N+RXfPUqfT5Smoh\naWTy/8Uvkh6UtGJN4ij5RKSmG+pZjfUBrgM2A3YAlgKekrR0poKk04mr3h5J3A9oJvFn0Lzw4ZaO\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xef8e0f0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Tensor(\"Mean_1:0\", shape=(), dtype=float32)\n",
      "Train Accuracy: 0.658333\n",
      "Test Accuracy: 0.541667\n"
     ]
    }
   ],
   "source": [
    "_, _, parameters = model(X_train, Y_train, X_test, Y_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Expected output**: although it may not match perfectly, your expected output should be close to ours and your cost value should decrease.\n",
    "\n",
    "<table> \n",
    "<tr>\n",
    "    <td> \n",
    "    **Cost after epoch 0 =**\n",
    "    </td>\n",
    "\n",
    "    <td> \n",
    "      1.917929\n",
    "    </td> \n",
    "</tr>\n",
    "<tr>\n",
    "    <td> \n",
    "    **Cost after epoch 5 =**\n",
    "    </td>\n",
    "\n",
    "    <td> \n",
    "      1.506757\n",
    "    </td> \n",
    "</tr>\n",
    "<tr>\n",
    "    <td> \n",
    "    **Train Accuracy   =**\n",
    "    </td>\n",
    "\n",
    "    <td> \n",
    "      0.940741\n",
    "    </td> \n",
    "</tr> \n",
    "\n",
    "<tr>\n",
    "    <td> \n",
    "    **Test Accuracy   =**\n",
    "    </td>\n",
    "\n",
    "    <td> \n",
    "      0.783333\n",
    "    </td> \n",
    "</tr> \n",
    "</table>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Congratulations! You have finised the assignment and built a model that recognizes SIGN language with almost 80% accuracy on the test set. If you wish, feel free to play around with this dataset further. You can actually improve its accuracy by spending more time tuning the hyperparameters, or using regularization (as this model clearly has a high variance). \n",
    "\n",
    "Once again, here's a thumbs up for your work! "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "ename": "ImportError",
     "evalue": "Could not import the Python Imaging Library (PIL) required to load image files.  Please refer to http://pillow.readthedocs.org/en/latest/installation.html for installation instructions.",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mImportError\u001b[0m                               Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-62-1d2440e4a49c>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0mfname\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;34m\"images/thumbs_up.jpg\"\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mimage\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0marray\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mndimage\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mimread\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfname\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mflatten\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mFalse\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      3\u001b[0m \u001b[0mmy_image\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mscipy\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmisc\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mimresize\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mimage\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0msize\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m64\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m64\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m      4\u001b[0m \u001b[0mplt\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mimshow\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmy_image\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[0;32mD:\\ProgramData\\Anaconda3\\lib\\site-packages\\scipy\\ndimage\\io.py\u001b[0m in \u001b[0;36mimread\u001b[0;34m(fname, flatten, mode)\u001b[0m\n\u001b[1;32m     23\u001b[0m     \u001b[1;32mif\u001b[0m \u001b[0m_have_pil\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m     24\u001b[0m         \u001b[1;32mreturn\u001b[0m \u001b[0m_imread\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfname\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mflatten\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmode\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m---> 25\u001b[0;31m     raise ImportError(\"Could not import the Python Imaging Library (PIL)\"\n\u001b[0m\u001b[1;32m     26\u001b[0m                       \u001b[1;34m\" required to load image files.  Please refer to\"\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m     27\u001b[0m                       \u001b[1;34m\" http://pillow.readthedocs.org/en/latest/installation.html\"\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mImportError\u001b[0m: Could not import the Python Imaging Library (PIL) required to load image files.  Please refer to http://pillow.readthedocs.org/en/latest/installation.html for installation instructions."
     ]
    }
   ],
   "source": [
    "fname = \"images/thumbs_up.jpg\"\n",
    "image = np.array(ndimage.imread(fname, flatten=False))\n",
    "my_image = scipy.misc.imresize(image, size=(64,64))\n",
    "plt.imshow(my_image)"
   ]
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "coursera": {
   "course_slug": "convolutional-neural-networks",
   "graded_item_id": "bwbJV",
   "launcher_item_id": "0TkXB"
  },
  "kernelspec": {
   "display_name": "Python [default]",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
